#!/data/data/com.termux/files/usr/bin/bash

# Termux网站部署脚本（2025版）
# 支持Apache/Nginx双引擎，集成内网穿透配置

# 配置参数（根据实际情况修改）
WEB_ROOT="$HOME/www"                  # 网站根目录（Termux标准路径）
ZIP_URL="https://gitee.com/zxc72/repository/raw/master/encxy.tar.gz" # 建议使用GitHub Releases
TMP_DIR="$HOME/tmp"                   # 临时目录（自动清理）
MAX_RETRY=3                         # 下载重试次数
WEB_SERVER="nginx"                  # 可选值: apache/nginx
LOG_FILE="$WEB_ROOT/deploy.log"       # 日志文件路径
PUBLIC_IP=$(ifconfig wlan0 | grep 'inet ' | awk '{print $2}') # 自动获取WiFi IP

# 初始化环境（Termux专用）
initialize_termux() {
    echo "=== Termux环境初始化 ===" > "$LOG_FILE"
    exec > >(tee -a "$LOG_FILE") 2>&1
    
    # 确保存储权限
    if [ ! -d "$HOME/storage" ]; then
        termux-setup-storage >> "$LOG_FILE" 2>&1
        echo "已授予存储权限" | tee -a "$LOG_FILE"
    fi
}

# 系统维护（Termux优化版）
termux_maintenance() {
    echo "=== Termux系统维护 ===" | tee -a "$LOG_FILE"
    pkg update -y >> "$LOG_FILE" 2>&1
    pkg upgrade -y >> "$LOG_FILE" 2>&1
    
    # 安装基础依赖（集成多个方案建议）【1†source】【3†source】【5†source】
    pkg install -y \
        wget tar unzip \
        $([ "$WEB_SERVER" = "apache" ] && echo "apache2" || echo "nginx") \
        openssh screen curl
    
    # 验证安装
    local required_tools="wget tar unzip apache2 nginx"
    for tool in $required_tools; do
        if ! command -v $tool &> /dev/null; then
            echo "错误：$tool 安装失败" | tee -a "$LOG_FILE"
            exit 1
        fi
    done
}

# 创建网站目录（Termux优化结构）
create_termux_dir() {
    echo "=== 创建网站目录 ===" | tee -a "$LOG_FILE"
    mkdir -p "$WEB_ROOT/{public_html,logs,ssl}" 
    chmod -R 755 "$WEB_ROOT"
    chown -R $USER:$USER "$WEB_ROOT"
}

# 下载与解压（支持多种格式）
download_unpack() {
    local archive_name=$(basename "$ZIP_URL")
    
    # 下载处理（集成wget增强参数）【4†source】【5†source】
    echo "=== 下载压缩包 ===" | tee -a "$LOG_FILE"
    wget -c --show-progress --timeout=15 \
        -O "$TMP_DIR/$archive_name" "$ZIP_URL"
    
    # 智能解压（支持7z格式）【1†source】【6†source】
    echo "=== 解压文件 ===" | tee -a "$LOG_FILE"
    case "$archive_name" in
        *.tar.gz) tar -xzf "$TMP_DIR/$archive_name" -C "$TMP_DIR" ;;
        *.zip) unzip -d "$TMP_DIR" "$TMP_DIR/$archive_name" ;;
        *.7z) 7z x "$TMP_DIR/$archive_name" -o"$TMP_DIR" ;;
        *) echo "错误：不支持压缩格式" | tee -a "$LOG_FILE"; exit 1 ;;
    esac
}

# Web服务器配置（Termux专用）
configure_server() {
    case "$WEB_SERVER" in
        apache)
            echo "=== 配置Apache ===" | tee -a "$LOG_FILE"
            # 修改Termux专用配置【1†source】【2†source】
            sed -i 's/Listen 80/Listen 8080/' $PREFIX/etc/apache2/httpd.conf
            sed -i 's/#ServerName.*/ServerName 127.0.0.1:8080/' $PREFIX/etc/apache2/httpd.conf
            ;;
        nginx)
            echo "=== 配置Nginx ===" | tee -a "$LOG_FILE"
            # 创建Termux专用配置【3†source】【4†source】
            cat > $PREFIX/etc/nginx/nginx.conf <<EOF
user $USER;
worker_processes auto;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
        server_name _;
        root $WEB_ROOT/public_html;
        index index.html index.php;
        location / {
            try_files \$uri \$uri/ =404;
        }
    }
}
EOF
            ;;
    esac
    
    # 启动服务
    systemctl restart $WEB_SERVER >> "$LOG_FILE" 2>&1
    echo "服务状态：$(systemctl is-active $WEB_SERVER)" | tee -a "$LOG_FILE"
}

# 公网访问配置（集成CPolar方案）【1†source】【4†source】
configure_tunnel() {
    echo "=== 配置内网穿透 ===" | tee -a "$LOG_FILE"
    # 安装CPolar（需提前获取token）
    if [ ! -f "$PREFIX/bin/cpolar" ]; then
        wget -O- https://api.cpolar.cn/cpolar/install.sh | bash
    fi
    
    # 启动隧道
    cpolar authtoken YOUR_AUTH_TOKEN
    cpolar http-port 8080
    cpolar start
    echo "公网访问地址：$(curl -s http://localhost:9999/api/v2/tunnels | jq -r '.tunnels[0].publicUrl')" | tee -a "$LOG_FILE"
}

# 主执行流程
main() {
    initialize_termux
    termux_maintenance
    create_termux_dir
    download_unpack
    rsync -avh --delete "$TMP_DIR/." "$WEB_ROOT/public_html/"
    configure_server
    configure_tunnel
    cleanup_temp
    echo "部署完成！访问地址：" | tee -a "$LOG_FILE"
    echo "本地：http://$PUBLIC_IP:8080" | tee -a "$LOG_FILE"
    echo "公网：$(curl -s http://localhost:9999/api/v2/tunnels | jq -r '.tunnels[0].publicUrl')" | tee -a "$LOG_FILE"
}

# 清理函数
cleanup_temp() {
    rm -rf "$TMP_DIR"/*
}

# 执行脚本
main
